<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 分组置换编码模型
 *
 * @property int $id 主键ID
 * @property int $uniacid 公众号ID
 * @property int $created_at 创建时间
 * @property int $updated_at 更新时间
 * @property int $switch_code_type 置换码类型
 * @property string $switch_code_name 置换码名称
 * @property string $switch_code_attribute 置换码属性
 */
class StoreCashierSwitchCode extends Model
{
    protected $table = 'ims_yz_store_cashier_switch_code';
    
    protected $fillable = [
        'uniacid',
        'switch_code_type',
        'switch_code_name',
        'switch_code_attribute'
    ];

    protected $hidden = [];
    
    protected $casts = [
        'id' => 'integer',
        'uniacid' => 'integer',
        'created_at' => 'integer',
        'updated_at' => 'integer',
        'switch_code_type' => 'integer'
    ];

    /**
     * 查询启用的置换码类型
     */
    public function scopeEnabled($query)
    {
        return $query->where('switch_code_type', '>', 0);
    }

    /**
     * 按类型排序
     */
    public function scopeOrdered($query)
    {
        return $query->orderBy('switch_code_type', 'asc');
    }

    /**
     * 获取所有置换支持类型
     */
    public static function getSwapTypes()
    {
        return static::enabled()
            ->ordered()
            ->select(['switch_code_type', 'switch_code_name'])
            ->get()
            ->map(function($item) {
                return [
                    'type' => $item->switch_code_type,
                    'name' => $item->switch_code_name
                ];
            })
            ->toArray();
    }
}
